/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package practica1.actions;

import java.awt.event.ActionEvent;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import javax.swing.AbstractAction;
import javax.swing.KeyStroke;
import practica1.Practica1;
import practica1.controller.Controller;
import practica1.language.Language;
import practica1.language.LanguageEvent;
import practica1.language.LanguageListener;
import practica1.logic.LogicExperimento;
import practica1.ui.dialog.DialogPropiedades;

/**
 * Clase que implementa la acción de mostrar las propiedades del experimento
 * @author Miguel González - Ceura
 */
public class ActionPropiedades extends AbstractAction  implements LanguageListener {

    /**
     * Constructor de la clase
     */
    public ActionPropiedades() {
        super(Language.getI().getP("PROPIEDADES"), null);

        Language.getI().addLanguageListener(this);
        
        putValue(SHORT_DESCRIPTION, Language.getI().getP("PROPIEDADES_EXPERIMENTO"));
        putValue(NAME, Language.getI().getP("PROPIEDADES"));
        putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_R, 
                InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK));
        putValue(MNEMONIC_KEY, new Integer(KeyEvent.VK_R));
        putValue(SELECTED_KEY, Boolean.TRUE);
    }
    
    /**
     * Cuando sucede la acción nos encargamos de cerrar el experimento seleccionado
     * @param e ActionEvent Evento producido
     */
    @Override
    public void actionPerformed(ActionEvent e) {
        LogicExperimento exp = Controller.getInstance().
                getExperimentoSeleccionado();
        
        DialogPropiedades dialog = new DialogPropiedades(
                Practica1.getInstance(), exp);
        
        dialog.setVisible(true);

        if(dialog.getAction() == DialogPropiedades.ACEPTAR) {
            //Si hemos modificado los campos actualizamos el experimento
            exp.setNombreExperimento(dialog.getNombreExperimento());
            exp.setNombreInvestigador(dialog.getNombreInvestigador());
            exp.setProyectoInvestigacion(dialog.getProyectoInvestigacion());
            exp.setTipoBacteria(dialog.getTipoBacteria());
        }
    }

    /**
     * Al cambiar el idioma actualizamos el nombre y la descripción
     * @param evt LanguageEvent
     */
    @Override
    public void idiomaChange(LanguageEvent evt) {
        putValue(SHORT_DESCRIPTION, Language.getI().getP("PROPIEDADES_EXPERIMENTO"));
        putValue(NAME, Language.getI().getP("PROPIEDADES"));
    }
}
